package net.hn.hnms.biz.common.activiti.builder;


import net.hn.hnms.biz.common.activiti.params.ProcessParam;
import net.hn.hnms.biz.common.activiti.params.ProcessStepParam;

import java.util.List;

/**
 * Created on 2022/8/8.
 *
 * @author ly
 * @desc: 流程定义信息生成器
 */
public class ProcessDefinitionCreator {

    private final ProcessParam processParam = new ProcessParam();

    /**
     * 设置流程名称
     * @param processName 流程名称
     * @return ProcessDefinitionCreator 流程定义信息生成器
     */
    public ProcessDefinitionCreator processName(String processName) {
        processParam.setProcessName(processName);
        return this;
    }

    /**
     * 设置流程描述
     * @param processContent 流程描述
     * @return ProcessDefinitionCreator 流程定义信息生成器
     */
    public ProcessDefinitionCreator processContent(String processContent) {
        processParam.setProcessContent(processContent);
        return this;
    }

    /**
     * 设置创建人
     * @param creator 创建人
     * @return ProcessDefinitionCreator 流程定义信息生成器
     */
    public ProcessDefinitionCreator creator(String creator) {
        processParam.setCreator(creator);
        return this;
    }

    /**
     * 设置流程步骤
     * @param stepParam 流程步骤
     * @return ProcessDefinitionCreator 流程定义信息生成器
     */
    public ProcessDefinitionCreator step(ProcessStepParam stepParam) {
        processParam.addStep(stepParam);
        return this;
    }

    /**
     * 设置多个流程步骤
     * @param stepParams 多个流程步骤
     * @return ProcessDefinitionCreator 流程定义信息生成器
     */
    public ProcessDefinitionCreator steps(List<ProcessStepParam> stepParams) {
        processParam.addSteps(stepParams);
        return this;
    }

    /**
     * 构造流程生成数据
     * @return ProcessParam 流程生成数据
     */
    public ProcessParam build() {
        return this.processParam;
    }
}
